package com.quiz.bis.controller;

import com.quiz.bis.domain.bo.PaperStrategyBO;
import com.quiz.bis.domain.bo.PaperTemplateBO;
import com.quiz.bis.domain.vo.PaperStrategyVO;
import com.quiz.bis.domain.vo.PaperTemplateVO;
import com.quiz.bis.service.IPaperStrategyService;
import com.quiz.bis.service.IPaperTemplateService;
import com.quiz.common.core.controller.BaseController;
import com.quiz.common.core.domain.R;
import com.quiz.common.mybatis.core.page.PageQuery;
import com.quiz.common.mybatis.core.page.TableDataInfo;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 试卷模板管理
 *
 * @author ahuan
 */
@RestController
@RequestMapping("paper2/template")
@Tag(name = "试卷模板管理")
@RequiredArgsConstructor
public class PaperTemplateController extends BaseController {

    private final IPaperTemplateService templateService;

    /**
     * 不分页查询模板列表
     */
    @GetMapping("/list")
    public List<PaperTemplateVO> list(String name) {
        return templateService.pageTemplateList(name);
    }

    /**
     * 分页查询模板列表
     */
    @GetMapping("/page")
    public TableDataInfo<PaperTemplateVO> page(String name, PageQuery pageQuery) {
        return templateService.pageTemplatePage(pageQuery, name);
    }

    /**
     * 获取模板详情
     */
    @GetMapping("/{templateId}")
    public R<PaperTemplateVO> detail(@PathVariable Long templateId) {
        return templateService.getTemplateDetail(templateId);
    }

    /**
     * 创建模板
     */
    @PostMapping
    public R<Long> create(@Validated @RequestBody PaperTemplateBO templateBO) {
        return templateService.createTemplate(templateBO);
    }

    /**
     * 更新模板
     */
    @PutMapping
    public R<Void> update(@Validated @RequestBody PaperTemplateBO templateBO) {
        return templateService.updateTemplate(templateBO);
    }

    /**
     * 删除模板
     */
    @DeleteMapping("/{templateId}")
    public R<Void> delete(@PathVariable Long templateId) {
        return templateService.deleteTemplate(templateId);
    }
}